package com.ben.ffy;

import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.media.AudioManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.DisplayMetrics;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;

//表示各个界面的安全类型枚举
enum WhichView {WELLCOM_VIEW,MAIN_VIEW,GAME_VIEW,LAST_VIEW,SCORE_VIEW}

public class MyActivity extends Activity {
	
	Button btnStart;
	Button btnScore;
	Button btnExit;
	CheckBox ckbSound;
	
	GameView gameView;//游戏界面的引用
	WellcomeSurfaceView wellcomView;//"百纳科技"欢迎界面类的引用
	MainView mainview;//"选择主界面"类的引用
	LastView lastview;//最终界面的引用
	ScoreSurfaceView scoreview;
	WhichView curr;//枚举类的引用
	
	
	boolean backgroundsoundFlag=true;//背景音乐开启的标志位，默认为开启
	
	Handler myHandler = new Handler(){//处理各个SurfaceView发送的消息
        public void handleMessage(Message msg) {
        	switch(msg.what)
        	{
        	case 0:
        		goToMainView();//进入“选择主界面”
        		break;
        	case 1:
        		goToGameView();//进入"游戏界面"
        		break;
        	case 2:
        		goToLastView();//进入游戏结束界面
        		break;
        	case 3:
        		goToScoreView();
        		break;
        	}
        }
	};
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        //游戏过程中只允许调整多媒体音量，而不允许调整通话音量
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
        		WindowManager.LayoutParams.FLAG_FULLSCREEN);//去掉标头
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//强制横屏
        
        //获取分辨率
        DisplayMetrics dm=new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        //给常量类中的屏幕高和宽赋值
        if(dm.widthPixels>dm.heightPixels)
        {
        	Constant.SCREEN_WIDTH=dm.widthPixels;
        	Constant.SCREEN_HEIGHT=dm.heightPixels;
        }else
        {
        	Constant.SCREEN_HEIGHT=dm.widthPixels;
        	Constant.SCREEN_WIDTH=dm.heightPixels;
        }
        Constant.changeRadio();
        goToWellcomView();//进入"欢迎界面"
    }

    
	@Override
	public boolean onKeyDown(int keyCode,KeyEvent e)
	{
		if(keyCode==4)
		{
			 switch(curr)
			 {
			 case SCORE_VIEW://得分界面，跳转到主控制界面
			 case LAST_VIEW://最后的界面，跳转到主控制界面
			 case GAME_VIEW://如果游戏进行中，返回到主界面
				 goToMainView();
				 break;
			 case WELLCOM_VIEW://欢迎界面，退出游戏
			 case MAIN_VIEW://主控制界面，退出游戏
				 System.exit(0);
				 break;
			 
			 }
			   return true;
		}
		return false;

	}

    //向Handler发送信息的方法
    public void sendMessage(int what)
    {
    	Message msg = myHandler.obtainMessage(what); 
    	myHandler.sendMessage(msg);
    } 
    //进入"欢迎"界面
	public void goToWellcomView()
	{
		if(wellcomView==null)
    	{
			wellcomView=new WellcomeSurfaceView(this);
    	}
		setContentView(wellcomView);
		curr=WhichView.WELLCOM_VIEW;
	}
	//进入"游戏界面"
	public void goToGameView()
	{
		if(gameView==null){
			gameView=new GameView(this);
    	}
    	setContentView(gameView);
    	gameView.requestFocus();//获取焦点
    	gameView.setFocusableInTouchMode(true);//设为可触控
    	curr=WhichView.GAME_VIEW;
	}
	//进入“选择主界面”
	public void goToMainView()
	{
//		if(mainview==null){
//			mainview=new MainView(this);
//    	}
//    	setContentView(mainview);
//    	mainview.requestFocus();//获取焦点
//    	mainview.setFocusableInTouchMode(true);//设为可触控
		setContentView(R.layout.main);
		btnStart=(Button)this.findViewById(R.id.btnStart);
		btnScore=(Button)this.findViewById(R.id.btnScore);
		btnExit=(Button)this.findViewById(R.id.btnExit);
		ckbSound=(CheckBox)this.findViewById(R.id.ckbSound);
		btnStart.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				goToGameView();
			}});
		btnScore.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				goToScoreView();
			}});
		btnExit.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				 System.exit(0);
			}});
		ckbSound.setOnCheckedChangeListener(new OnCheckedChangeListener(){

			@Override
			public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
				AudioManager am=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
		        //得到AudioManager对象
		        
		        //参数为 设置情景模式的类型
		        //AudioManager.RINGER_MODE_NORMAL 正常模式,有声,是否震动取决于原来系统声音设置中振动的设置
		        //AudioManager.RINGER_MODE_SILENT 静音模式,无声不震
		        //AudioManager.RINGER_MODE_VIBRATE 震动模式,无声,震动
				backgroundsoundFlag=isChecked;
				if(isChecked)
				{am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);}
				else
				{am.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);}
			}});
    	curr=WhichView.MAIN_VIEW;
	}
	//进入游戏结束界面
	public void goToLastView()
	{
		DBUtils.insert(gameView.score.getScore(), DateUtil.getCurrentDate());
		if(lastview==null){
			lastview=new LastView(this);
    	}
    	setContentView(lastview);
    	lastview.requestFocus();//获取焦点
    	lastview.setFocusableInTouchMode(true);//设为可触控
    	curr=WhichView.LAST_VIEW;
	}
	public void goToScoreView()
	{
		if(scoreview==null){
			scoreview=new ScoreSurfaceView(this);
    	}
    	setContentView(scoreview);
    	scoreview.requestFocus();//获取焦点
    	scoreview.setFocusableInTouchMode(true);//设为可触控
    	curr=WhichView.SCORE_VIEW;
	}
    @Override 
    public void onResume()
    {
    	super.onResume();
    }
    @Override 
    public void onPause()
    {
    	super.onPause();
    }
    
}